const express = require('express');
const app = express()

// 多个中间件之间 共享同一份req 和 res 基于这样的特性 可以在上游的中间间中 统一为req 或 res 对象添加自定义属性或方法 供下游的中间件或路由使用 

// app.use((req, res, next) => {
//    console.log('上游中间件使用不了下游定义的setTime' + req.setTime);
//     next()
// })

app.use((req, res, next) => {
    // 例如记录请求到达服务器的时间
    const time = Date.now()
    // 通过自定义属性记录下来 因为中间件和路由会共享同一份req 和 res 那么上游中间件定义了请求时间 下游的中间件和路由就可以直接调用了
    req.setTime = time
    next()
})

app.get('/', (req, res) => {
    res.send('get ' +  req.setTime)
})
app.post('/user', (req, res) => {
    res.send('post ' + req.setTime)
})
// app.get('/user', (req, res) => {
//     res.send('get ' + req.time)
// })

app.listen(80, () => {
    console.log('http://127.0.0.1');
})